package com.hbpu.encap.thread;

public class DaemonThreadDemo {
    public static void main(String[] args) {
        // 创建一个线程任务，用于不断输出信息
        Runnable task = new Runnable() {
            @Override
            public void run() {
                int count = 0;
                while (true) {
                    try {
                        System.out.println("守护线程工作中... " + (++count));
                        // 休眠500毫秒，模拟任务处理
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        System.out.println("守护线程被中断");
                        break;
                    }
                }
                System.out.println("守护线程退出循环");
            }
        };

        // 创建线程对象，并传入任务
        Thread daemonThread = new Thread(task);
        // 设置线程为守护线程
        daemonThread.setDaemon(true);
        // 启动守护线程
        daemonThread.start();

        // 主线程执行自己的任务
        System.out.println("主线程开始执行任务");
        try {
            // 模拟主线程处理任务，休眠2000毫秒
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("主线程任务执行完毕，主线程结束");

        // 当主线程结束后，JVM会自动退出，守护线程也会停止运行
    }
}
